<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/6/6
 * Time: 11:12
 */

namespace app\lib\exception;


use Exception;
use think\exception\Handle;
use think\Log;
use think\Request;

class ExceptionHandler extends Handle
{
  private $code;
  private $msg;
  private $errorCode;
  public function render(Exception $e)
  {
    if($e instanceof BaseException){
      //如果是自定义的异常
      $this->code = $e->code;
      $this->msg = $e->msg;
      $this->errorCode = $e->errorCode;
    } else {
      $this->code = 500;
      $this->msg = '服务器内部错误';
      $this->errorCode = 999;
      $this->recordErrorLog($e);
    }
    $request = Request::instance();
    $result = [
      'msg' => $this->msg,
      'error_ode' => $this->errorCode,
      'request_url' => $request->url()
    ];

    return json($result,$this->code);
  }
  private function recordErrorLog(\Exception $e)
  {
    Log::init([
      'type' => 'File',
      'path' => LOG_PATH,
      'level' => ['error']
    ]);
    Log::record($e->getMessage(),'error');
  }
}